package com.redepronik.negosysdis.rrhh.controller;

import static com.redepronik.negosys.utils.Utils.presentaMensaje;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.redepronik.negosys.rrhh.entity.Ciudad;
import com.redepronik.negosys.rrhh.entity.Provincia;
import com.redepronik.negosys.rrhh.service.CiudadService;
import com.redepronik.negosys.rrhh.service.ProvinciaService;

@Controller
@Scope("session")
public class ProvinciaBean {

	@Autowired
	private ProvinciaService provinciaService;

	@Autowired
	private CiudadService ciudadService;

	private List<Provincia> listaProvincias;
	private List<Ciudad> listaCiudades;

	private Provincia provincia;
	private Ciudad ciudad;

	public ProvinciaBean() {
		limpiarObjetos();
	}

	public void actualizar() {
		provincia.getCiudads().clear();
		for (Ciudad c : listaCiudades)
			provincia.addCiudad(c);

		provinciaService.actualizar(provincia);
		presentaMensaje(FacesMessage.SEVERITY_INFO,
				"ACTUALIZO LA PROVINCIA CON EXITO");
		limpiarObjetos();
	}

	public void cargarCiudades() {
		listaCiudades = new ArrayList<Ciudad>();
		listaCiudades.addAll(provincia.getCiudads());
	}

	public Ciudad getCiudad() {
		return ciudad;
	}

	public List<Ciudad> getListaCiudades() {
		return listaCiudades;
	}

	public List<Provincia> getListaProvincias() {
		return listaProvincias;
	}

	public Provincia getProvincia() {
		return provincia;
	}

	@PostConstruct
	public void init() {
		listaProvincias = provinciaService.obtener();
	}

	public void insertarCiudad() {
		boolean bn = true;
		for (Ciudad c : listaCiudades)
			if (c.getNombre().compareToIgnoreCase(ciudad.getNombre()) == 0) {
				bn = false;
				presentaMensaje(FacesMessage.SEVERITY_ERROR,
						"YA EXISTE LA CIUDAD");
				break;
			}

		if (bn) {
			ciudad.setNombre(ciudad.getNombre().toUpperCase());
			ciudad.setActivo(true);
			listaCiudades.add(ciudad);
		}
		ciudad = new Ciudad();
	}

	public void limpiarObjetos() {
		provincia = new Provincia();
		ciudad = new Ciudad();
		listaCiudades = new ArrayList<Ciudad>();
	}

	public void setCiudad(Ciudad ciudad) {
		this.ciudad = ciudad;
	}

	public void setListaCiudades(List<Ciudad> listaCiudades) {
		this.listaCiudades = listaCiudades;
	}

	public void setListaProvincias(List<Provincia> listaProvincias) {
		this.listaProvincias = listaProvincias;
	}

	public void setProvincia(Provincia provincia) {
		this.provincia = provincia;
	}

}
